import torch
from d2l import torch as d2l

X, W_xh = torch.normal(0, 1, (3, 1)), torch.normal(0, 1, (1, 4))
H, W_hh = torch.normal(0, 1, (3, 4)), torch.normal(0, 1, (4, 4))
# 【3，1】 【3，4】 【3，5】
x = print(X.shape)
print(H.shape)
# 【1，4】 【4，4】 【5，4】
print(W_xh.shape)
print(W_hh.shape)
# 这个算法不支持
print(torch.matmul(X, W_xh) + torch.matmul(H, W_hh))
print(torch.cat((X, H), 1).shape)
print(torch.cat((W_xh, W_hh), 0).shape)
# 这个算法比较好，因为可以直接创造一个torch.Size([5, 4])的矩阵，无需创建两个参数 W_xh, W_hh
print(torch.matmul(torch.cat((X, H), 1), torch.cat((W_xh, W_hh), 0)).shape)
